package com.module.aichat.db.converter

import androidx.room.TypeConverter
import com.google.gson.Gson
import com.google.gson.JsonObject
import com.module.aichat.data.bean.ChatMessageType
import com.module.aichat.data.protocol.messageContent.MessageContent
import com.module.aichat.data.protocol.messageContent.ImageMessageContent
import com.module.aichat.data.protocol.messageContent.TextMessageContent

/**
 * 作者：sosou
 * <p>
 * 版本：1.0
 * <p>
 * 创建日期：2025/6/30
 * <p>
 * 描述：
 * <p>
 * 修订历史：
 */
class ContentConverter {
    @TypeConverter
    fun toContent(contentJson: String?): MessageContent? {
        if (contentJson.isNullOrEmpty()) {
            return null
        }
        return kotlin.runCatching {
            val obj = Gson().fromJson(contentJson, JsonObject::class.java)
            when (obj.get("type").asString) {
                ChatMessageType.TEXT.type -> {
                    Gson().fromJson(contentJson, TextMessageContent::class.java)
                }

                ChatMessageType.IMAGE.type -> {
                    Gson().fromJson(contentJson, ImageMessageContent::class.java)
                }
                else -> {
                    null
                }
            }
        }.getOrElse { null }
    }

    @TypeConverter
    fun fromContent(content: MessageContent?): String {
        return content?.let {
            Gson().toJson(it)
        } ?: let {
            ""
        }
    }
}